package com.zenithmind.chat.pojo.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 视图对象基类
 * 遵循单一职责原则，提供通用的VO字段
 */
@Data
@Schema(description = "视图对象基类")
public abstract class BaseVO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "主键ID")
    private String id;
    
    @Schema(description = "创建时间")
    private LocalDateTime createTime;
    
    @Schema(description = "更新时间")
    private LocalDateTime updateTime;
    
    @Schema(description = "创建者ID")
    private String createBy;
    
    @Schema(description = "更新者ID")
    private String updateBy;
    
    /**
     * 获取显示名称
     * 子类可以重写此方法返回适合显示的名称
     * 
     * @return 显示名称
     */
    public abstract String getDisplayName();
    
    /**
     * 获取状态描述
     * 子类可以重写此方法返回状态的文字描述
     * 
     * @return 状态描述
     */
    public String getStatusDescription() {
        return "正常";
    }
}
